XCOPY, ROBOCOPY

Иногда что-то изучишь и не пользуешься. Оно забывается. Потом, спустя много лет, всплывает задача. Ты у себя в мозгу запускаешь поиск, а индекс-то устарел или поврежден. Так и тут. Возникла задача - скопировать по сети огромный архив, но не весь, а выборочно. По маске. Стал вспоминать. Последнее, с чем работал - COPY. А тут, оказывается, новые версии подъехали. 

Какая разница между XCOPY и COPY

Я считаю, что основное отличие в том, что xcopy способно копировать иерархии папок, а copy предназначено для работы только с файлами. Это говорит о том, что я не думаю, что есть что-то, что можно было бы использовать (функциональность или производительность) от использования copy .

Обратите внимание, что даже xcopy устарело по сегодняшним стандартам. Robocopy - относительно новая утилита для копирования на современных платформах Windows.

НУ, поехали

c:\>xcopy /?

Копирует файлы и деревья каталогов.

XCOPY источник [назначение] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/J] [/EXCLUDE:файл1[+файл2][+файл3]...]

Разберем атрибуты

/A Копирует только файлы с установленным атрибутом архивации; сам атрибут при этом не изменяется.

/M Копирует только файлы с установленным атрибутом архивации; после копирования атрибут снимается.

/D:м-д-г Копирует файлы, измененные не ранее указанной даты. Если дата не указана, заменяются только конечные файлы с более ранней датой, чем у исходных файлов.

/EXCLUDE:файл1[+файл2][+файл3]... Список файлов, содержащих строки. Каждая строка должна располагаться в отдельной строке в файлах. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, при указании строки \obj\ или .obj будут исключены все файлы из каталога obj или все файлы с расширением OBJ соответственно.

/P Выводит запросы перед созданием каждого конечного файла.

/S Копирует только непустые каталоги с подкаталогами.

/E Копирует каталоги с подкаталогами, включая пустые. Эквивалент сочетания параметров /S /E. Совместим с параметром /T.

/V Проверяет размер каждого нового файла.

/W Выводит запрос на нажатие клавиши перед копированием.

/C Продолжает копирование вне зависимости от наличия ошибок.

/I Если назначение не существует и копируется несколько файлов, считается, что местом назначения является каталог.

/Q Запрещает вывод имен копируемых файлов.

/F Выводит полные имена исходных и конечных файлов во время копирования.

/L Выводит копируемые файлы.

/G Копирует зашифрованные файлы в конечную папку, не поддерживающую шифрование.

/H Копирует скрытые и системные файлы (среди прочих).

/R Разрешает замену файлов, предназначенных только для чтения.

/T Создает структуру каталогов (кроме пустых каталогов) без копирования файлов. Для создания пустых каталогов и подкаталогов используйте сочетание параметров /T /E.

/U Копирует только файлы, уже имеющиеся в конечной папке.

/K Копирует атрибуты. При использовании команды XСOPY обычно сбрасываются атрибуты «только для чтения».

/N Использует короткие имена при копировании.

/O Копирует сведения о владельце и данные ACL.

/X Копирует параметры аудита файлов (требуется параметр /O).

/Y Подавляет запрос на подтверждение перезаписи существующего конечного файла.

/-Y Обязательный запрос на подтверждение перезаписи существующего конечного файла.

/Z Копирует сетевые файлы с возобновлением.

/B Копирует символьную ссылку вместо ее целевого объекта.

/J Копирует с использованием ввода-вывода без буферизации. Рекомендуется для очень больших файлов.

Примеры:

1. Скопировать все файлы и подкаталоги (включая пустые) с диска A на диск B

xcopy a: b: /s /e

2. Скопировать все файлы (включая системные и скрытые файлы) и подкаталоги (включая пустые) с диска T на диск G,

xcopy t: g: /s /e /h

3. Обновить файлы в каталоге \folder-2 файлами из каталога \folder-1, измененными после 7 июля 2020 года

xcopy \folder-1 \folder-2 /d:07-06-2020

4. Обновить файлы в каталоге \folder-2 файлами из каталога \folder-1, независимо от их даты

xcopy \folder-1 \folder-2 /u

5. Вывести список в файл xcopy.out, которые были бы скопированы в каталог \folder-2 из каталога \folder-1, измененные после 7 июля 2020 года

xcopy \folder-1 \folder-2 /d:07-06-2020 /l > xcopy.out

8. Cкопировать с диска T на диск G только файлы с атрибутом «Архивный»

xcopy t: g: /a

9. Скопировать папку \folder-1 в папку \folder-2, сохранив при этом ее разрешения

xcopy \folder-1 \folder-2 /O /X /E /H /K

10. Поддержка UNC путей. Скопировать сетевую папку \\server\share\folder-1 в папку \folder-2, сохранив при этом ее разрешения

xcopy \\server\share\folder-1 \folder-2 /O /X /E /H /K

Ссылки и документация по xcopy для разбора: